package net.itheima.mm.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * 异常处理器
 * @ControllerAdvice: 控制器的增强（如果controller有异常信息，则通知该对象）
 * @ExceptionHandler: 指定你要处理的异常类型
 * 异常分类：
 *      需查异常: Exception(必须的处理)
 *      非需查异常： runtimeException
 */

@ControllerAdvice
public class CustomExceptionResolver {

    @ExceptionHandler({
            CustomException.class
    })
    //处理自定义异常
    //参数获取异常对象（controller中抛出的异常）
    public ModelAndView resolverCustomException(CustomException e){
        System.out.println("异常信息：" + e.getMessage());
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("errorMessage", e.getMessage());
        modelAndView.setViewName("error");
        return modelAndView;
    }

    @ExceptionHandler({
            Exception.class
    })
    public ModelAndView resolverOtherException(Exception e){
        System.out.println("异常信息：" + e.getMessage());
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("errorMessage", "系统异常，请联系管理员!!");
        modelAndView.setViewName("error");
        return modelAndView;
    }

}
